package _11_整理题目._6_模拟设计._区间覆盖问题;

import org.junit.Test;

import java.util.Arrays;

/**
 * https://mp.weixin.qq.com/s/ioUlNa4ZToCrun3qb4y4Ow
 * https://leetcode-cn.com/problems/meeting-rooms/submissions/
 *
 * 给定一个会议时间安排的数组 intervals ，
 * 每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ，
 * 请你判断一个人是否能够参加这里面的全部会议。
 *
 * 思路：
 *      因为一个人在同一时刻只能参加一个会议，因此题目实质是判断是否存在重叠区间，
 *      这个简单，将区间按照会议开始时间进行排序，然后遍历一遍判断即可。
 *      遍历会议，如果下一个会议在前一个会议结束之前就开始了，返回 false。
 */
public class _01_判断区间是否重叠 {

    public boolean canAttendMeetings(int[][] intervals) {
        Arrays.sort(intervals, (v1, v2)->v1[0]-v2[0]);
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < intervals[i-1][1]) {
                return false;
            }
        }
        return true;
    }

    @Test
    public void main() {
        int[][] intervals = {{0,30}, {5,10}, {15, 20}};
        System.out.println(canAttendMeetings(intervals));
    }
}
